Aller au contenu

Flappy bird

Objectif #

Dans Flappy Bird, le joueur contrôle un oiseau, qui doit voler le plus longtemps possible en évitant de toucher le sol, le plafond, ou des obstacles ayant la forme de tuyaux. Pour cela, le joueur dispose d’un seul et unique bouton. Tant qu’il n’appuie pas dessus, l’oiseau avance en permanence vers la droite, et perd constamment de l’altitude. En revanche, dès que le joueur appuie sur le bouton, l’oiseau se met à battre des ailes, et regagne instantanément de l’altitude, lui permettant de slalomer entre les tuyaux.

Dans le cadre de ce projet, il vous est proposé de développer un algorithme permettant à l’ordinateur de jouer à Flappy Bird sans assistance du joueur, afin d’établir le meilleur score possible.

Ce projet se découpe en trois phases :

  • une phase de modélisation de la trajectoire de l’oiseau, en fonction de sa position, de la vitesse, de la gravité, et de si le joueur appuie ou non sur le bouton;
  • une phase de réflexion sur les stratégies qui peuvent être adoptées afin de permettre à l’oiseau de survivre le plus longtemps possible;
  • une phase de programmation, pour pouvoir tester ces stratégies dans le jeu, les comparer, et trouver celle qui permet d’avoir le meilleur high score.

screenshot

Pour ce projet, vous avez à votre disposition le code du jeu Flappy Bird, implémenté en Python; ce code est déjà fonctionnel et il est possible de le lancer en version interactive (le joueur fait voler l’oiseau en appuyant sur la touche espace) ou en version programmable (le vol de l’oiseau se fait via un appel à une fonction).

Travail sur les machines de l’Université #

Un tutoriel pour la mise en place est disponible ici : Installer des paquets avec Conda.

Code fourni #

Équipe encadrante #

Vincent Brebion et Stefan Duffner (prenom.nom@insa-lyon.fr)

Disponibilités #

  • Stefan Duffner sera présent le mardi 18 juin toute la matinée
  • vendredi 21 juin après midi
  • lundi 24 juin après midi
  • Vincent Brebion sera présent le mardi 25 juin toute l’après midi
  • mercredi 26 juin après midi
  • jeudi 27 juin après midi
  • vendredi 28 juin toute la journée